﻿

namespace Huirui.Cavan.Application.Seedwork
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics.Contracts;
    using System.Linq;
    using Huirui.Cavan.Core.Message;

    /// <summary>
    ///     Base Facade.
    ///     Facades provide two basic operation types 
    ///     1) Get the 'Business Entities' (using its inner DAO objects) to the upper layers as fully valid objects
    ///     2) Set the 'Business Entities' to persistence. In this cases Facades is the only responsible for
    ///     Business rules validation. That mostly means that 
    ///     I. only valid object can be inserted; 
    ///     II. only valid and existing object can updated
    ///     III. only unused instance without any relations and dependencies can be deleted.
    ///     To provide all these operations, IFacade contains the Messages collection,
    ///     which can be used to inform upper layers that something happend (info, warn, error)
    /// </summary>
    public interface IAppService : IMessagesReporter, IMessagesHolder { }
}